// pages/demand/demand.js
const app = getApp()
const common = require('../../utils/common.js')
const auth = require('../../utils/auth.js')

Page({
  /**
   * 页面的初始数据
   */
  data: {
    // 联系表单
    showContactForm: false,
    contactTargetId: '',
    
    // 筛选条件
    filters: [
      { id: 0, name: '全部' },
      { id: 1, name: '农机租赁' },
      { id: 2, name: '技术咨询' },
      { id: 3, name: '种植合作' },
      { id: 4, name: '产品销售' },
      { id: 5, name: '物流配送' }
    ],
    selectedFilter: 0,
    
    // 需求列表数据
    demandList: [],
    
    // 分页参数
    page: 1,
    pageSize: 10,
    hasMore: true,
    loadingMore: false,
    
    // 搜索相关
    showSearchModal: false,
    searchKeyword: '',
    searchHistory: []
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    console.log('需求大厅页面加载')
    this.loadDemandList()
    this.loadSearchHistory()
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 更新tabBar选中状态
    if (typeof this.getTabBar === 'function' && this.getTabBar()) {
      this.getTabBar().setData({
        selected: 2
      })
    }
  },

  /**
   * 加载需求列表（预留接口调用位置）
   */
  loadDemandList(loadMore = false) {
    if (this.data.loadingMore && loadMore) return
    
    if (!loadMore) {
      this.setData({ page: 1, hasMore: true })
    }
    
    this.setData({ loadingMore: true })
    
    // TODO: 调用API接口获取需求列表
    // 使用静态数据模拟
    setTimeout(() => {
      const mockData = this.getMockDemandList()
      const demandList = loadMore ? this.data.demandList.concat(mockData) : mockData
      this.setData({
        demandList: demandList,
        loadingMore: false,
        hasMore: mockData.length === this.data.pageSize
      })
    }, 500)
  },

  /**
   * 获取模拟数据
   */
  getMockDemandList() {
    const demands = [
      {
        id: 1,
        title: '急需100亩有机蔬菜种植地',
        desc: '寻找适合有机蔬菜种植的土地，要求土壤肥沃，灌溉条件良好，交通便利',
        tag: '种植合作',
        tagClass: 'tag-primary',
        topBarClass: 'bar-primary',
        location: '浙江杭州',
        budget: '20万',
        user: '陈**',
        phone: '188****1234',
        time: '2小时前',
        views: '328'
      },
      {
        id: 2,
        title: '寻找大型收割机服务',
        desc: '需要专业的收割机团队，约200亩水稻收割，要求设备先进，经验丰富',
        tag: '农机租赁',
        tagClass: 'tag-secondary',
        topBarClass: 'bar-secondary',
        location: '江苏南京',
        budget: '5万',
        user: '黄**',
        phone: '139****5678',
        time: '5小时前',
        views: '456'
      },
      {
        id: 3,
        title: '农业种植技术咨询服务',
        desc: '需要专业的农业技术专家指导，解决病虫害问题，提高产量',
        tag: '技术咨询',
        tagClass: 'tag-accent',
        topBarClass: 'bar-accent',
        location: '山东济南',
        budget: '面议',
        user: '刘**',
        phone: '156****7890',
        time: '1天前',
        views: '562'
      },
      {
        id: 4,
        title: '优质水果批量销售',
        desc: '自家果园产水果寻求批量销售渠道，品质优良，价格优惠',
        tag: '产品销售',
        tagClass: 'tag-purple',
        topBarClass: 'bar-purple',
        location: '四川成都',
        budget: '10万吨',
        user: '张**',
        phone: '138****2345',
        time: '2天前',
        views: '789'
      },
      {
        id: 5,
        title: '冷链物流配送需求',
        desc: '需要专业的冷链物流公司，运输新鲜蔬菜到全国各地',
        tag: '物流配送',
        tagClass: 'tag-secondary',
        topBarClass: 'bar-secondary',
        location: '广东广州',
        budget: '3万',
        user: '王**',
        phone: '139****6789',
        time: '3天前',
        views: '431'
      }
    ]
    
    const { selectedFilter } = this.data
    if (selectedFilter === 0) {
      return demands
    }
    
    const filterName = this.data.filters[selectedFilter].name
    return demands.filter(item => item.tag === filterName)
  },

  /**
   * 筛选条件改变
   */
  onFilterChange(e) {
    const index = e.currentTarget.dataset.index
    if (index === this.data.selectedFilter) return
    
    this.setData({ 
      selectedFilter: index,
      demandList: []
    })
    this.loadDemandList()
  },

  /**
   * 上拉加载更多
   */
  onReachBottom() {
    if (!this.data.hasMore || this.data.loadingMore) return
    this.loadDemandList(true)
  },

  /**
   * 跳转到需求详情
   */
  goToDetail(e) {
    const id = e.currentTarget.dataset.id
    common.navigateTo(`/pages/demand-detail/demand-detail?id=${id}`)
  },

  /**
   * 联系需求方
   */
  async onContactDemand(e) {
    const id = e.currentTarget.dataset.id
    console.log('联系需求方:', id)
    
    // 检查是否登录
    const isLogin = await auth.requireLogin(() => {
      // 登录成功后显示表单
      this.setData({
        showContactForm: true,
        contactTargetId: id
      })
    })
    
    // 如果已经登录，直接显示表单
    if (isLogin) {
      this.setData({
        showContactForm: true,
        contactTargetId: id
      })
    }
  },

  /**
   * 隐藏联系表单
   */
  hideContactForm() {
    this.setData({
      showContactForm: false
    })
  },

  /**
   * 联系表单提交成功
   */
  onContactSuccess(e) {
    console.log('联系表单提交成功:', e.detail)
    wx.showToast({
      title: '提交成功',
      icon: 'success'
    })
  },

  /**
   * 打开搜索弹窗
   */
  onSearchClick() {
    this.setData({ showSearchModal: true })
  },

  /**
   * 关闭搜索弹窗
   */
  onCloseSearch() {
    this.setData({ 
      showSearchModal: false,
      searchKeyword: ''
    })
  },

  /**
   * 搜索输入
   */
  onSearchInput(e) {
    this.setData({ searchKeyword: e.detail.value })
  },

  /**
   * 搜索确认
   */
  onSearchConfirm(e) {
    const keyword = e.detail.value.trim()
    if (!keyword) {
      common.showToast('请输入搜索关键词', 'none')
      return
    }
    
    // 保存搜索历史
    this.saveSearchHistory(keyword)
    
    // TODO: 执行搜索
    console.log('搜索关键词:', keyword)
    common.showToast('搜索功能开发中...', 'none')
    
    this.setData({ showSearchModal: false, searchKeyword: '' })
  },

  /**
   * 清空搜索框
   */
  onClearSearch() {
    this.setData({ searchKeyword: '' })
  },

  /**
   * 加载搜索历史
   */
  loadSearchHistory() {
    const history = common.getStorage('demandSearchHistory') || []
    this.setData({ searchHistory: history })
  },

  /**
   * 保存搜索历史
   */
  saveSearchHistory(keyword) {
    let history = this.data.searchHistory
    
    // 如果已存在，先移除
    history = history.filter(item => item !== keyword)
    
    // 添加到开头
    history.unshift(keyword)
    
    // 最多保存10条
    if (history.length > 10) {
      history = history.slice(0, 10)
    }
    
    this.setData({ searchHistory: history })
    common.setStorage('demandSearchHistory', history)
  },

  /**
   * 点击搜索历史
   */
  onHistoryClick(e) {
    const keyword = e.currentTarget.dataset.keyword
    this.setData({ searchKeyword: keyword })
    
    // TODO: 执行搜索
    console.log('搜索历史关键词:', keyword)
    common.showToast('搜索功能开发中...', 'none')
    
    this.setData({ showSearchModal: false, searchKeyword: '' })
  },

  /**
   * 清空搜索历史
   */
  onClearHistory() {
    common.showModal('提示', '确定要清空搜索历史吗？', true).then(confirm => {
      if (confirm) {
        this.setData({ searchHistory: [] })
        common.removeStorage('demandSearchHistory')
        common.showToast('已清空', 'success')
      }
    })
  },

  /**
   * 阻止事件冒泡
   */
  stopPropagation() {},

  /**
   * 下拉刷新
   */
  onPullDownRefresh() {
    console.log('下拉刷新')
    this.loadDemandList()
    setTimeout(() => {
      wx.stopPullDownRefresh()
    }, 1000)
  },

  /**
   * 分享
   */
  onShareAppMessage() {
    return {
      title: '壹加壹需求大厅',
      path: '/pages/demand/demand',
      imageUrl: '/images/share.jpg'
    }
  },

  /**
   * 分享到朋友圈
   */
  onShareTimeline() {
    return {
      title: '壹加壹需求大厅',
      query: '',
      imageUrl: '/images/share.jpg'
    }
  }
})

